package com.victor.service;

import java.util.List;

import com.victor.entity.Advertisement;
import com.victor.entity.Answer;
import com.victor.entity.Comment;
import com.victor.entity.Fans;
import com.victor.entity.FollowQuestion;
import com.victor.entity.FollowUser;
import com.victor.entity.Label;
import com.victor.entity.Question;
import com.victor.entity.User;

public interface QuestionService {
	/**
	 * 提交提问
	 * 
	 * @param question
	 * @return
	 */
	public boolean submitQuestion(Question question);

	/**
	 * 查询提问列表
	 * 
	 * @return
	 */
	public List<Question> getAllList();

	/**
	 * 通过id查询提问详情
	 * 
	 * @param qid
	 * @return
	 */
	public Question findByid(int qid);

	/**
	 * 查询问题列表(mobile)
	 * 
	 * @return
	 */
	public List<Question> getHomepage();

	/**
	 * 粉丝列表
	 * 
	 * @param userid
	 * @return
	 */
	public List<Fans> getFansList(String userid);

	/**
	 * 采纳答案
	 * 
	 * @param a_id答案表id
	 * @return
	 */
	public boolean adoptAnswer(String a_id);

	/**
	 * 通过q_id查询该提问是否有采纳的答案
	 * 
	 * @param q_id
	 * @return
	 */
	public List<Answer> ifadoptAnswer(String q_id);

	/**
	 * 回答提问
	 * 
	 * @param answer
	 * @return
	 */
	public boolean answerQuestion(Answer answer);

	/**
	 * 发布评论(单文字)
	 * 
	 * @param comment
	 * @return
	 */
	public boolean releaseComment(Comment comment);

	/**
	 * 我的--关注--问题(我关注的问题)
	 * 
	 * @param userid
	 * @return
	 */
	public List<FollowQuestion> getFollowQuestion(String userid);

	/**
	 * 我的--关注--用户(我关注的用户)
	 * 
	 * @param userid
	 * @return
	 */
	public List<FollowUser> getFollowUser(String userid);

	/**
	 * 我的--提问(查询所有我的提问)
	 * 
	 * @param userid
	 * @return
	 */
	public List<Question> getQuestionByMe(String userid);

	/**
	 * 我的--回答(查询我回答过的提问)
	 * 
	 * @param userid
	 * @return
	 */
	public List<Question> getAnswersByMe(String userid);

	/**
	 * 获取广告列表
	 * 
	 * @return
	 */
	public List<Advertisement> getAdvertisements();

	/**
	 * 获取某条回答的评论列表(时间排序)
	 * 
	 * @param a_id
	 * @return
	 */
	public List<Comment> getCommentByAnswerId(String a_id);

	/**
	 * 待解答页(查询所有没有回答的提问)
	 * 
	 * @return
	 */
	public List<Question> getQuestionsToNoAnswers();

	/**
	 * 用户页(查询用户信息和发布的所有提问)
	 * 
	 * @param userid
	 * @return
	 */
	public List<Question> getAllQuestionByUserid(String userid);

	/**
	 * 模糊查询(返回提问列表 和 回答人数)
	 * 
	 * @param str
	 * @return
	 */
	public List<Question> likeQuery(String str);

	/**
	 * 修改个人信息
	 * 
	 * @param user
	 * @return
	 */
	public boolean updatePersonalData(User user);

	/**
	 * 通过userid查询user表中是否存在该用户
	 * 
	 * @param userid
	 * @return
	 */
	public User getUserByUserid(String userid);

	/**
	 * user表中不存在该用户 则插入
	 * 
	 * @param user
	 * @return
	 */
	public boolean insertPersonalData(User user);

	/**
	 * 通过a_id查询回答信息
	 * 
	 * @param a_id
	 * @return
	 */
	public Answer findByidToAnswer(String a_id);

	/**
	 * 查询提问列表(日期筛选)
	 * 
	 * @param starttime
	 * @param endtime
	 * @return
	 */
	public List<Question> getQuestionBySearch(String starttime, String endtime, String tiaojian, String[] labels);

	/**
	 * 存入标签
	 * 
	 * @param label
	 */
	public void addLable(String label);

	/**
	 * 查询热门标签
	 * 
	 * @return
	 */
	public List<Label> getAllLable();

	/**
	 * 修改
	 * 
	 * @param question
	 * @return
	 */
	public boolean update(Question question);

	/**
	 * 批删
	 * 
	 * @param ids
	 * @return
	 */
	public boolean batchDelete(int[] ids);

}
